iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
自我挑戰組

30天玩轉規劃LINE BOT系列 第 22

第22天:增加 line bot 機器人功能(六)

  • 分享至 

  • xImage
  •  

前一篇最後增加了讓客戶確認的訊息,然後再客戶確認後也會回傳相關的預約資料。
那接下來就是要把回傳的預約資料,儲存到SQL資料庫中這樣才可以,不然客戶操作了老半天,我們商家沒有資料,就有可能讓客戶撲空之類的問題發生。

首先在models資料夾下建立一個python的檔案,並命名為Reservation。
https://ithelp.ithome.com.tw/upload/images/20221007/20144761gNaN7vlomn.png

建立完成後,匯入 db與datetime的模組。

程式碼:

from extensions import db
import datetime

定義一個class為Reservation是繼承db的模組,然後設定tablename為【reservation】(資料夾名稱),
資料欄位分別為:
id, 整數, 主鍵
user_id, 整數 ,外來鍵(對應到的是先前建立了user資料表中的id)
booking_service_itemid, String字數50, 不可為空
booking_service, String字數150, 不可為空
booking_datetime, 日期, 不可為空
is_canceled, 布林直. 預設0
created_on, 時間, 預設資料被建立時間
update_on, 時間, 紀錄最後被修改的時間(預設資料被建立時間)

程式碼:

class Reservation(db.Model):
    __tablename__ = 'reservation'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    booking_service_itemid = db.Column(db.String(50), nullable=False)
    booking_service = db.Column(db.String(150), nullable=False)
    booking_datetime = db.Column(db.DateTime, nullable=False)

    is_canceled = db.Column(db.Boolean(), server_default='0')
    created_on = db.Column(db.DateTime, default=datetime.datetime.now())
    updated_on = db.Column(db.DateTime, default=datetime.datetime.now(), onupdate=datetime.datetime.now())

再來定義初始化函數__init__,讓物件本身建立時能能帶入資料,包含user_id、booking_service_itemid、booking_service、booking_datetime

程式碼:

    def __init__(self, user_id, booking_service_itemid, booking_service, booking_datetime):
        self.user_id = user_id
        self.booking_service_itemid = booking_service_itemid
        self.booking_service = booking_service
        self.booking_datetime = booking_datetime

再來到user.py中,user模組中需要添加reservation關聯到Reservation預約的class,設定backref為user
屬性建立好,之後資料相互就可以查詢,如用用戶資料即可查到用戶預約了哪些。或者查詢預約即可看到,哪些用戶預約了。

程式碼:

reservation = db.relationship('Reservation', backref='user')

再來到service.py中匯入extensions的db,models資料夾中的user 與 Reservation 匯入 User 與 Reservation 模組

程式碼:

from extensions import db
from models.user import User
from models.Reservation import Reservation

到Terminal輸入flask db migrate,然後會在migrations資料夾中的versions資料夾中新增一個版本

然後再輸入flask db upgrade更新資料夾
更新完成就可以在pgAdmin查看是否建立成功

下一篇,持續製作


上一篇
第21天:增加 line bot 機器人功能(五)
下一篇
第23天:增加 line bot 機器人功能(七)
系列文
30天玩轉規劃LINE BOT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言